草庐IT

Ruby File 类和方法

全部标签

c# - 是否有一种通用的方法来同步异步方法?

我们有一个常见的场景,我们有一个方法异步执行一些操作并在完成时引发一个事件。有时我们希望它同步完成,所以我们的代码看起来类似于:ManualResetEventreset=newManualResetEvent(false);someobject.AsyncActionDone+=(sender,args)=>reset.Set();someobject.PerformAsyncAction();reset.WaitOne();有没有办法编写一个辅助方法来做到这一点?我可以传递要执行的操作,但我不确定如何传递让辅助方法知道要监听哪个事件的东西,因为它看起来不像你可以传递EventHan

c# - 使用 stub 和模拟的正确方法是什么?

这是我的例子:[TestMethod]publicvoidNewAction_should_return_IndexAction(){NewViewModelviewModel=newNewViewModel(){Name="JoséInácioSantosSilva",Email="joseinacio@joseinacio.com",Username="joseinacio"};//IsUserRegisteredisusedtovalidateUsername,Usernameisunique._mockAuthenticationService.Setup(x=>x.IsUse

c# - 可以将一个流传递给多个方法吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我有一个接口(interface)定义为:publicinterfaceIClientFileImporter{boolCanImport(Streamstream);intImport(Streamstream);}想法是获取任何文件流并通过此接口(interface)的一系列实现来运行它,以确定哪个应该处理该文件。一些实现可能会查找特定的标题行,而其他实现可能会查找特定的字节序列等..

c# - 有没有一种扩展代码优先迁移的好方法

我正在开始一个使用EntityFramework的新项目。我研究了有关如何创建数据库的选项,发现代码优先迁移最有意义(如果您需要知道原因,请参阅底部)。Code-First迁移让我可以使用任意SQL,这意味着我仍然可以完全控制。在实践中,我发现问题在于,对于某些常见任务,使用SQL似乎是非常重复的。出于我的目的,我不关心迁移中的扩展是否与提供者无关(我内联的SQL不是)。但是,我并没有真正在迁移框架中找到一个好的接缝或扩展点来添加这些东西。举个具体的例子,假设我想为MS-SQL复制指定一个RowGuid列。每次出现的形式都是Sql(string.Format("AlterTable{0

c# - 使 TypedReference 在方法 block 之外保持事件状态而不返回它

我想假设这个问题的目的是检查是否至少有一种方法,即使是通过最不安全的hack,来保持对非blittable值类型的引用。我知道这种设计类型堪比犯罪;除了学习之外,我不会在任何实际情况下使用它。所以现在请接受阅读异端的不安全代码。我们知道可以通过这种方式存储和增加对blittable类型的引用:unsafeclassFoo{void*_ptr;publicvoidFix(refintvalue){fixed(void*ptr=&value)_ptr=ptr;}publicvoidIncrement(){varpointer=(int*)_ptr;(*pointer)++;}}在安全性方面

c# - 重写继承方法时避免显式类型转换

我有一个基础抽象类,它也实现了一个特定的接口(interface)。publicinterfaceIMovablewhereTEntity:classwhereT:struct{TEntityMove(IMovermoverProvider);}publicabstractclassAnimal:IMovable{...publicvirtualAnimalMove(IMovermoverProvider){//performsmovementusingprovidedmover}}然后我继承了一些类,其中一些类必须重写基类的接口(interface)实现方法。publicclassS

c# - 缓存来自 [n async] 工厂方法的结果,前提是它不抛出

更新:在@usr指出我错误地假设Lazy后进行了大量修改的默认线程安全模式是LazyThreadSafetyMode.PublicationOnly...我想通过async延迟计算一个值工厂方法(即它返回Task)并在成功时将其缓存。在异常(exception)情况下,我希望我可以使用它。然而,我不想成为theexceptioncachingbehavior的牺牲品。那Lazy处于默认模式(LazyThreadSafetyMode.ExecutionAndPublication)Exceptioncaching:Whenyouusefactorymethods,exceptionsar

C#。结构方法代码保存在内存中的什么地方?

众所周知,.NET将值类型保存在内存中(大部分在堆栈中,但在某些情况下也可能在堆中等)...我的问题是-结构的代码在哪里?如果我在结构中说出16字节的数据字段和其中的大量计算方法-我假设16字节将被复制到堆栈中并且方法代码存储在其他地方并为所有实例共享结构。这些假设是否正确? 最佳答案 MSIL存储在程序集的代码部分中-Windows在首次加载程序集时将其映射到内存中。首次执行该方法时,JIT会将MSIL编译为x86/x64代码。一旦该方法被编译到内存中,它通常会留在那里并由所有线程共享。在某些情况下,多个AppDomain会导致M

c# - 什么时候调用 ConvertBack 方法?

我知道当要显示数据时,会调用Convert()方法对数据进行转换,然后显示转换后的数据。我想知道ConvertBack()方法何时被调用?它的目的是什么?我有一个DataGrid,它的ItemSource绑定(bind)到某个集合,并且我已经为收藏。当我创建IsReadOnly="True"(在DataGrid中)时,如果我双击单元格(对于IValueConverter实现)然后改变焦点。但是当我创建IsReadOnly="False"时,无论我对DataGrid及其单元格做什么,都不会调用ConvertBack方法。请解释DataGrid单元格的这种行为和IValueConverte

c# - 如何在运行时从 NUnit 测试运行中获取单元测试方法属性?

我将有关给定测试的各种信息(多个错误跟踪系统的ID)存储在一个属性中,如下所示:[TestCaseVersion("001","B-8345","X543")]publicvoidTestSomethingOrOther()为了在测试过程中获取这些信息,我写了下面的代码:publicstringGetTestID(){StackTracest=newStackTrace(1);StackFramesf;for(inti=1;i().First();returntcv.TestID;}}}问题在于,在Release模式下通过NUnit运行测试时,应该具有测试名称和这些属性的方法被替换为以